﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using MedicalAdviser.Portable.DataTypes.DomainObjects;

namespace MedicalAdviser.Portable.DataTypes.WsTypes
{

     [DataContract]
    public enum Action
    {
        [EnumMember]    Notting= 0,
        [EnumMember]    OpenDrug = 1,
        [EnumMember]    EquivalentLowCost = 2,
        [EnumMember]    EquivalentRecommendations = 3,
        [EnumMember]    PriceHistory  = 4,
        [EnumMember]    ViewDrug = 5,
        [EnumMember]    Keyword = 6,
        [EnumMember]    RecommendDrug = 7,
    }

    /// <summary>
    /// Classe que serve como parametro de entrada do webservice
    /// pode ser utilizada em varias operação basta trocar o parametro action
    /// </summary>
    [DataContract]
    public class  AppInteration
    {
        /// <summary>
        /// Pode fazer varias acções
        /// [1] - Abrir o medicamento
        /// [2] - Listar os medicamentos equivalentes, ordenados por preço decresentemente
        /// [3] - Listar os medicamentos equivalentes, com mais recomendações
        /// [4] - Listar o historico do preço dos medicamentos
        /// </summary>
        [DataMember]
        public Action Action { get; set; }
        /// <summary>
        /// Pode ter vários significados, por enquato esta a ser usada para guardar as keywords de pesquisa.-
        /// </summary>
        [DataMember]
        public String StrDescription { get; set; }
        [DataMember]
        public short Rate { get; set; }
        [DataMember]
        public CdoDrug Drug { get; set; }
        [DataMember]
        public Auth ClientAuth { get; set; }
    }

    [DataContract]
    public class SearchResult
    {
        [DataMember]
        public int   TotalElements { get; set; }
        [DataMember]
        public int  PageElements { get; set; }
        [DataMember]
        public String GrainDefaultOrder { get; set; }
        [DataMember]
        public List<CdoDrug> Results { get; set; }
    }

}
